// router.js
import {RouterMount,createRouter} from 'uni-simple-router';
import store from '@/store/index.js';
const whiteList = ['/pages/sys/login/index','pages/sys/workbench/add-form', '/pages/sys/login/indexCode', '/pages/sys/login/forgetCode', 
'/pages/sys/login/registerCode','/pages/sys/login/forget','/pages/sys/login/registerTeacher','/pages/sys/login/reg']
const router = createRouter({
	platform: process.env.VUE_APP_PLATFORM,  
	routes: [...ROUTES]
});
//全局路由前置守卫
router.beforeEach((to, from, next) => {
// next()
// return
  if (store.state.vuex_token) {
             if (to.path === '/pages/sys/login/index') {
                  next('/pages/sys/msg/index')
                  // NProgress.done()
                } else {
                  if (store.getters.roles.length === 0) {
                    // isRelogin.show = true
                    // 判断当前用户是否已拉取完user_info信息
                     
                    store.dispatch('GetInfo').then(() => {
                      next()
                      // isRelogin.show = false
                      // store.dispatch('GenerateRoutes').then(accessRoutes => {
                      //   // 根据roles权限生成可访问的路由表
                      //   router.addRoutes(accessRoutes) // 动态添加可访问路由表
                      //   next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
                      // })
                    }).catch(err => {
                        // store.dispatch('LogOut').then(() => {
                        //   Message.error(err)
                        //   next({ path: '/' })
                        // })
                         next('/pages/sys/login/index?redirect=${to.fullPath}') 
                      })
                  } else {
                    next()
                  }
                }

  }
  else {
   
      // 没有token
      if (whiteList.indexOf(to.path) !== -1) {
        // 在免登录白名单，直接进入
        next()
      } else {
        next('/pages/sys/login/index?redirect=${to.fullPath}') 
        // 否则全部重定向到登录页
      }}

});
// 全局路由后置守卫
router.afterEach((to, from) => {
})

export {
	router,
	RouterMount
}
